Generarea Combinărilor de n luate cate m
#include<iostream>
using namespace std;

int n,m,s[100];

void init(int k){
if(k==1) s[k]=0;
else s[k]=s[k-1];}

int succesor(int k)
{
if(s[k]<n-m+k)
{s[k]=s[k]+1; return 1;}
else return 0;}

int valid(){
return 1;}

int solutie(int k){
return k==m;}

void tipar(){
for(int i=1;i<=m;i++)
cout<<s[i]<<" ";
cout<<endl;}
void bt(int k){
init(k);
while(succesor(k))
if(valid()) if(solutie(k)) tipar();
else bt(k+1);}

main()
{
cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
bt(1);}